package behavior.state.versionTwo;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;

/**
 * @author huhaiqiang
 * @version V1.0
 * @description
 * @date 2018/12/21 10:27
 */
@Data
@Slf4j
public class PersonB {

    private int hour;

    private State state;

    public PersonB() {
        // 在构造器里初始化状态，从早晨起床开始
        this.state = new OnAnEarlyShift();
    }

    /**
     * 人（环境类）的个行为
     *
     * 状态模式允许通过改变一个对象的内部状态，来改变对象的行为，就像修改了对象的类一样！
     */
    public void doSth() {
        // 传入的是PersonB的对象
        state.doSth(this);
        // TODO 每次都从头开始搜索状态类，状态复位
//        this.state = new OnAnEarlyShift();
    }
}
